Booting network servers from a storage area network (“SAN”) has become increasingly common in complex data center environments. This can be attributed to the significant benefits of SAN boot, or iSCSI boot, over traditional local disk booting, which include maximizing consolidation of IT resources, reducing equipment costs, and realization of considerable management benefits due to centralization of the boot process. Booting from a SAN, diskless servers can be deployed in an environment in which a boot disk is located on a storage device connected to the SAN; in many cases, the storage device may be RAID-capable. The server (“initiator”) communicates with the storage device connected to the SAN on which the boot disk is located (“boot target” or “target”). The server/initiator communicates with the storage device/boot target through the SAN via either a Fibre Channel host bus adapter (“HBA”) or an Internet small computer systems interface (“iSCSI”) network interface card (“NIC”).
A typical boot policy deployed by a server manager will include information regarding the boot target ID, which in the case of an iSCSI SAN is the IP address of the target. In a normal boot scenario, the initiator will have instantiated thereon two boot devices, comprising either virtual NICs (“vNICs”), in the case of iSCSI, or virtual HBAs (“vHBAs”), in the case of fibre channel (“FC”), multi-pathed to the boot target. Each of the paths will be connected through a separate physical link to the target. A static priority is set in connection with the boot devices to ensure that boot up occurs through a particular one of the boot devices first and then through the other boot device if boot up cannot occur through the first device for some reason. The priority could be based on peripheral component interconnect (“PCI”) enumeration order, so that the device that has the lowest PCI order executes the option ROM first. One drawback to a static priority methodology such as this is that neither the boot devices nor the boot process has any knowledge of the traffic patterns occurring in the network and therefore cannot dynamically switch to a least cost path even though one might be available.